東西都設定好,我們就可以開啟遊戲進行測試了,在IntelliJ左邊,可以開啟Gradle
gradle中的fabric有一個RunClient選項,點兩下就可以開始跑遊戲了。
阿斯~熟悉的畫面
我們先來做一個物品練練手,我們都知道Minecraft裡面有很多物品,基本上每個東西都有自己的物品型態,今天我們可以先從一個金屬錠開始。
首先我們先建立一個資料夾,我們叫他item
item資料夾中,我們建一個class叫Moditems
在這個Moditem中,我們需要一個registerItem方法
private static Item registerItem(String name,Item item){
return Registry.register(Registries.ITEM, new Identifier(TheClassicofMountainsandOceans.MOD_ID, name), item);
}
這個方法是用來註冊Minecraft物品的,我們使用Registry.register將物品註冊到Minecraft的物品註冊表,對著程式按中鍵,可以看到原始碼
Registries.ITEM代表我們現在在註冊的是一個物品,同樣中鍵可以看到ITEM在註冊表中的定義
new Identifier(TheClassicofMountainsandOceans.MOD_ID, name)是指新建一個物品的唯一識別符,所以在()中我們帶入模組的ModID跟作為參數傳入的name,接下來item是一個Item類型的物件,管理物品的性質與屬性,這裡我們使用傳入的參數。
這個方法準備好之後我們就可以使用了
public static final Item Siderite = registerItem("siderite", new Item(new FabricItemSettings()));
我們創建一個Item類型的Siderite,Siderite是殞鐵的意思,RisterItem的第一個字串參數是物品名稱,請跟ModID一樣只使用小寫英文跟 _ ,後面我們需要一個Item類物件,我們使用new Item(new FabricItemSettings()),這代表我們新建了一個Item實例,而FabricItemSetting()可以進一步設定這個物品的屬性,不過這裏我們不需要任何設定。
現在我們已經在程式上有了一個物品,但是遊戲中我們接觸到的不只是程式中的內容,還需要再進一步包裝,現在我們在專案管理可以看到,有一個叫resources的資料夾
請在這個資料夾中找到asset/[你的ModID],在這裡我們需要三個資料夾,代表語言與顯示文字的lang資料夾、代表紋理的texture資料夾以及一個告訴Texture要怎麼運作的models資料夾。
首先第一個lang資料夾,請建立一個叫en_us的JSON檔(en_us.json),這是當遊戲中語言是美式英語時物品顯示的名稱。接著我們這樣寫
{
"item.como.siderite": "Siderite"
}
這代表我們這個名稱的物品類別是item,como是我的物品ID,而siderite是我的物品ID,後面的Siderate是我希望的物品的美式英語。
接下來我們在models資料夾中再建一個item資料夾,這個資料夾中建立一個siderite.json檔,裡面這樣寫
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "como:item/siderite"
}
}
"parent": "minecraft:item/generated代表我們使用Minecraft的預設2D模型,我們的Texture將會按照預設的渲染方式渲染。
"textures"代表我們的紋理,layer0是指物品的主紋理,minecraft物品可以有多層紋理,這跟遊戲中的附魔有關,"como:item/siderite"是我們的紋理應該要存放的位置,應該要位在resources/assets/como/texture/item/siderate,所以我們需要在texturey資料夾中建立一個item資料夾,然後將我們的紋理丟到這個資料夾。
紋理應該要怎麼做呢,有三個方法
第一個是將Minecraft的原版紋理做變化,透過改變顏色跟外觀來讓新的紋理看起來不一樣,我的殞鐵就是這個方法
第二個方法是在網路上找到現實中的物品圖片,在丟到像素化網站將圖片像素化,這樣圖片就看起來像是Minecraft風格了
第三種方法是透過繪畫工具來繪製2D跟3D的紋理與模型
第二種跟第三種方法之後會提到,我的殞鐵是使用了Minecraft中原有的金屬錠,透過改變顏色來讓紋理看起來不一樣,我們可以先去正常開啟遊戲的啟動器中開啟1.20.1的遊戲,然後在電腦中搜索AppData資料夾(可以在搜索欄中輸入%Appdata%),然後在.minecraft/versions/1.20.1 中找到1.20.1版本的Java壓縮檔,解壓縮這個檔案,我們可以找到texture資料夾,裡面就能找到所有原版內容的紋理了。
透過小畫家發揮創意,就已將檔案丟到resources/assets/como/texture/item中,記得檔名要跟你的物品名稱一樣
現在萬事俱備,我們可以進入遊戲確認物品有沒有被註冊成功了
非常完美,這樣我們就完成我們的物品了